package beans;

import java.util.List;

import javax.naming.NamingException;

import co.edu.uniquindio.ondas.delegados.AdministradorDelegado;
import co.edu.uniquindio.ondas.delegados.GrupoDelegado;
import co.edu.uniquindio.ondas.entidades.Estudiante;
import co.edu.uniquindio.ondas.entidades.Grupo;
import co.edu.uniquindio.ondas.entidades.Maestro;

/**
 * @author Javier
 *Bean para un Nuvo grupo
 */
public class NuevoGrupoBean {

	private AdministradorDelegado administradorDelegado;
	private GrupoDelegado grupoDelegado;
	private Estudiante estudiante = new Estudiante();
	private Maestro maestro = new Maestro();
	private Grupo grupo = new Grupo();

	private List<String> listaMunicipios;
	private List<String> listaInstituciones;
	private List<String> listaSedes;

	private String municipioSeleccionado;
	private String institucionSeleccionada;
	private String sedeSeleccionada;
	private String mensaje="";

	/**
	 * Metodo que me inscribe un grupo
	 * 
	 * @throws NamingException
	 */

	public NuevoGrupoBean() throws NamingException {
		grupoDelegado = new GrupoDelegado();
		administradorDelegado = new AdministradorDelegado();
	}

	/**
	 * Metodo que permite crear una Bitacora numero 1 para el grupo
	 * @return
	 * @throws NamingException
	 */
	public String crearBitacora1Grupo() throws NamingException {

		String retorno="";
		mensaje = grupoDelegado.crearBitacora1Grupo(grupo,
				sedeSeleccionada, municipioSeleccionado);
		
		if (mensaje.equals("Fecha No Permitida")) {
			grupo=new Grupo();
			sedeSeleccionada=new String();
			municipioSeleccionado=new String();
		}else
			if (mensaje.equals("Login Repetido")) {
				grupo.setLogin("");
				grupo.setClave("");
			}else
				if (mensaje.equals("Grupo Creado")) {
					grupo=new Grupo();
					sedeSeleccionada=new String();
					municipioSeleccionado=new String();
					retorno="grupoIni";
				}
		
		return retorno;

	}

	/**
	 * Metodo que permite obtener una Lista de Municipios
	 * @return "bitacora1Grupo"
	 */
	public String obtenerListaMunicipios() {
		listaMunicipios = administradorDelegado.getListaMunicipios();
		listaInstituciones = administradorDelegado.getListaInstituciones();
		listaSedes = administradorDelegado.obtenerListaSedes();
		municipioSeleccionado=new String();
		sedeSeleccionada=new String();

		return "bitacora1Grupo";
	}

	/**
	 * Metodo que permite obtener la seleccion
	 * @return
	 */
	public String obtenerSeleccion() {
		listaInstituciones = administradorDelegado
				.getListaNombresInstituciones(municipioSeleccionado, "");
		listaSedes = administradorDelegado.obtenerListaSedesInstitucion(
				municipioSeleccionado, institucionSeleccionada, "");

		return "";
	}

	/**
	 * Metodo que permite obtener la sedes de una Institucion
	 * @return
	 */
	public String obtenerSedesInstitucion() {
		listaSedes = administradorDelegado.obtenerListaSedesInstitucion(
				municipioSeleccionado, institucionSeleccionada, "");

		return "";
	}

	/**
	 *Metodo accesor del atributo grupoDelegado
	 * @return the grupoDelegado
	 */
	public GrupoDelegado getGrupoDelegado() {
		return grupoDelegado;
	}

	/**
	 *Metodo Modificador del atributo grupoDelegado
	 * @param grupoDelegado the grupoDelegado 
	 */
	public void setGrupoDelegado(GrupoDelegado grupoDelegado) {
		this.grupoDelegado = grupoDelegado;
	}

	/**
	 *Metodo accesor del atributo estudiante
	 * @return the estudiante
	 */
	public Estudiante getEstudiante() {
		return estudiante;
	}

	/**
	 *Metodo Modificador del atributo estudiante
	 * @param estudiante the estudiante 
	 */
	public void setEstudiante(Estudiante estudiante) {
		this.estudiante = estudiante;
	}

	/**
	 *Metodo accesor del atributo maestro
	 * @return the maestro
	 */
	public Maestro getMaestro() {
		return maestro;
	}

	/**
	 *Metodo Modificador del atributo maestro
	 * @param maestro the maestro 
	 */
	public void setMaestro(Maestro maestro) {
		this.maestro = maestro;
	}

	/**
	 *Metodo accesor del atributo grupo
	 * @return the grupo
	 */
	public Grupo getGrupo() {
		return grupo;
	}

	/**
	 *Metodo Modificador del atributo grupo
	 * @param grupo the grupo 
	 */
	public void setGrupo(Grupo grupo) {
		this.grupo = grupo;
	}

	/**
	 *Metodo accesor del atributo listaMunicipios
	 * @return the listaMunicipios
	 */
	public List<String> getListaMunicipios() {
		return listaMunicipios;
	}

	/**
	 *Metodo Modificador del atributo listaMunicipios
	 * @param listaMunicipios the listaMunicipios 
	 */
	public void setListaMunicipios(List<String> listaMunicipios) {
		this.listaMunicipios = listaMunicipios;
	}

	/**
	 *Metodo accesor del atributo listaInstituciones
	 * @return the listaInstituciones
	 */
	public List<String> getListaInstituciones() {
		return listaInstituciones;
	}

	/**
	 *Metodo Modificador del atributo listaInstituciones
	 * @param listaInstituciones the listaInstituciones 
	 */
	public void setListaInstituciones(List<String> listaInstituciones) {
		this.listaInstituciones = listaInstituciones;
	}

	/**
	 *Metodo accesor del atributo listaSedes
	 * @return the listaSedes
	 */
	public List<String> getListaSedes() {
		return listaSedes;
	}

	/**
	 *Metodo Modificador del atributo listaSedes
	 * @param listaSedes the listaSedes 
	 */
	public void setListaSedes(List<String> listaSedes) {
		this.listaSedes = listaSedes;
	}

	/**
	 *Metodo accesor del atributo municipioSeleccionado
	 * @return the municipioSeleccionado
	 */
	public String getMunicipioSeleccionado() {
		return municipioSeleccionado;
	}

	/**
	 *Metodo Modificador del atributo municipioSeleccionado
	 * @param municipioSeleccionado the municipioSeleccionado 
	 */
	public void setMunicipioSeleccionado(String municipioSeleccionado) {
		this.municipioSeleccionado = municipioSeleccionado;
	}

	/**
	 *Metodo accesor del atributo institucionSeleccionada
	 * @return the institucionSeleccionada
	 */
	public String getInstitucionSeleccionada() {
		return institucionSeleccionada;
	}

	/**
	 *Metodo Modificador del atributo institucionSeleccionada
	 * @param institucionSeleccionada the institucionSeleccionada 
	 */
	public void setInstitucionSeleccionada(String institucionSeleccionada) {
		this.institucionSeleccionada = institucionSeleccionada;
	}

	/**
	 *Metodo accesor del atributo sedeSeleccionada
	 * @return the sedeSeleccionada
	 */
	public String getSedeSeleccionada() {
		return sedeSeleccionada;
	}

	/**
	 *Metodo Modificador del atributo sedeSeleccionada
	 * @param sedeSeleccionada the sedeSeleccionada 
	 */
	public void setSedeSeleccionada(String sedeSeleccionada) {
		this.sedeSeleccionada = sedeSeleccionada;
	}

	/**
	 *Metodo accesor del atributo mensaje
	 * @return the mensaje
	 */
	public String getMensaje() {
		return mensaje;
	}

	/**
	 *Metodo Modificador del atributo mensaje
	 * @param mensaje the mensaje 
	 */
	public void setMensaje(String mensaje) {
		this.mensaje = mensaje;
	}

	
}
